home *** CD-ROM | disk | FTP | other *** search
- ;.............................................................
- ;
- ; video.asm is a routine you can call from basic
- ; with the cx,dx,ax,bx registers as integers. The
- ; format is defint a-z, cx = 0 * 256 + 0. The 0
- ; represents the byte regs ch cl.
- ;
- vid_o segment byte public 'code'
- assume cs:vid_o,ds:nothing,es:nothing
- ;
- public video
- video proc far
- push bp
- mov bp,sp
- mov bx,[bp+12]
- mov cx,[bx]
- mov bx,[bp+10]
- mov dx,[bx]
- mov bx,[bp+8]
- mov ax,[bx]
- mov bx,[bp+6]
- mov bx,[bx]
- int 10h
- ;
- push bx
- mov bx,[bp+12]
- mov [bx],cx
- mov bx,[bp+10]
- mov [bx],dx
- mov bx,[bp+8]
- mov [bx],ax
- pop bx
- mov dx,bx
- mov bx,[bp+6]
- mov [bx],dx
- ;
- pop bp
- ret 8
- ;
- video endp
- vid_o ends
- ;.............................................................
- ;
- ; this is a subroutine called from basic
- ; that save or restores a 4000 char array
- ; to the screen use buff$ = space$(4000)
- ; or something to initialize array
- ; 0 = save screen 1 = restore screen
- ;
- ;
- scrn segment byte public 'code'
- assume cs:scrn,ds:scrn,es:scrn
- ;
- scrsave proc far
- public scrsave
- push bp
- mov bp,sp
- push ds
- push es
- scr_check:
- mov ah,15
- int 10h
- mov cx,0b000h
- mov dx,03bah
- cmp al,7
- jz opt_check
- mov cx,0b800h
- mov dx,03dah
- opt_check:
- mov bx,[bp+6]
- mov ax,[bx]
- mov bx,[bp+8]
- cmp al,0
- jne put_scr
- get_scr:
- mov si,0
- mov di,[bx+2]
- mov ds,cx
- jmp do_it
- put_scr:
- mov si,[bx+2]
- mov di,0
- mov es,cx
- do_it:
- mov cx,2000
- p1:
- in al,dx
- test al,1
- jnz p1
- cli
- p2:
- in al,dx
- test al,1
- jz p2
- move:
- movsw
- sti
- loop move
- fini:
- pop es
- pop ds
- pop bp
- ret 4
- ;.............................................................
- scrsave endp
- scrn ends
- ;
- ;
- ; bios.asm is a routine you can call from basic
- ; with the cx,dx,ax,bx registers as integers. The
- ; format is defint a-z, cx = 0 * 256 + 0. The 0
- ; represents the byte regs ch cl.
- ;
- bio_s segment byte public 'code'
- assume cs:bio_s,ds:nothing,es:nothing
- ;
- public bios
- bios proc far
- push bp
- mov bp,sp
- mov bx,[bp+12]
- mov cx,[bx]
- mov bx,[bp+10]
- mov dx,[bx]
- mov bx,[bp+8]
- mov ax,[bx]
- mov bx,[bp+6]
- mov bx,[bx]
- int 21h
- pop bp
- ret 8
- bios endp
- bio_s ends
- ;.............................................................
- ; hold.asm is a routine that will
- ; wait for a key to be struck and
- ; return after the keyboard buffer
- ; has been cleared
- ;
- hol_d segment byte public 'code'
- assume cs:hol_d,ds:nothing,es:nothing
- ;
- public hold
- hold proc far
- push bp
- ;
- holdit macro
- mov ah,8
- int 21h
- endm
- ;
- holdit
- ;
- pop bp
- ret
- hold endp
- hol_d ends
- end